<?php
declare (strict_types = 1);

namespace app\command;

use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
use think\facade\Cache;
use think\facade\Log;

/**
 * 同步客户信息、群组信息 每天一次
 * Class Syncust
 * @package app\command
 */
class Syncust extends Command
{

    protected function configure()
    {
        // 指令配置
        $this->setName('syncust')
            ->setDescription('syn syncust info to local');
    }

    protected function execute(Input $input, Output $output)
    {
//        Cache::set('is_syncust',false,3600);
        if(Cache::get('is_syncust') !== true || !Cache::get('is_syncust')){
            try {
                Cache::set('is_syncust',true,3600);
                Log::write('同步客户信息-开始','info');$output->writeln('同步客户信息-开始');
                $synCust = app()->invoke(['app\msgapi\service\HsorganizationService','synCust']);
                $synCust? Log::write('同步客户信息-成功','info') : Log::write('同步客户信息-失败','error');
                $synCust?$output->writeln('同步客户信息-成功') : $output->writeln('同步客户信息-失败');
                Log::write('同步客户信息-结束','info');$output->writeln('同步客户信息-结束');
                Log::write('同步群组信息-开始','info');$output->writeln('同步群组信息-开始');
                $synGroupInfo = app()->invoke(['app\msgapi\service\HuihuaGroupChatService','synGroupInfo']);
                $synGroupInfo? Log::write('同步群组信息-成功','info') : Log::write('同步群组信息-失败','error');
                $synGroupInfo?$output->writeln('同步群组信息-成功') : $output->writeln('同步群组信息-失败');
                Log::write('同步群组信息-结束','info');$output->writeln('同步群组信息-结束');

                Cache::set('is_syncust',false,3600);
            }catch (\Exception $e){
                Cache::set('is_syncust',false,3600);
                Log::write('同步客户信息、群组信息任务执行失败,'.$e->getMessage().$e->getLine(),'error');
                $output->writeln('同步客户信息、群组信息任务执行失败,'.$e->getMessage().$e->getLine());

            }
        }else{
            Log::write('客户、群组同步程序已在执行中,请等待执行完成.','error');
            $output->writeln('客户、群组同步程序已在执行中,请等待执行完成.');
        }

    }


}
